Privacy vs Performance
Ollama
Ollama is the easiest way to run local models on macOS, Linux, and Windows.Setup
- Install Ollama from ollama.ai
- Pull a high-performance model:
- Configure Strix:
Recommended Models
We recommend these models for the best balance of reasoning and tool use: Recommended models:- Qwen3 VL (
ollama pull qwen3-vl) - DeepSeek V3.1 (
ollama pull deepseek-v3.1) - Devstral 2 (
ollama pull devstral-2)
LM Studio / OpenAI Compatible
If you use LM Studio, vLLM, or other runners:Gateways that require custom headers
Some OpenAI-compatible gateways require extra HTTP headers (for attribution or tenant routing) alongside the bearer token. Set them withLLM_EXTRA_HEADERS as
a JSON object — they are sent on every request:
Extra request-body fields
Some provider parameters go in the request body rather than a header, and Strix has no dedicated setting for them. Set them withLLM_EXTRA_BODY as a
JSON object — they are merged into the body of every request to the model. For example, to
use OpenAI’s cheaper flex processing and attribute requests to a user with a
safety identifier (a hash, never a raw email):
model, messages or stream.
For endpoints behind a private CA, point Strix at your certificate bundle with
the standard SSL_CERT_FILE=/path/to/ca-bundle.pem — never disable TLS
verification against a real endpoint.
Tool calling must return structured tool_calls
Strix is entirely tool-driven: every working turn must be a native function/tool call. If your inference server returns the tool call as plain assistant text instead of a structured tool_calls field, Strix never sees a call it can execute, so the agent makes no real progress — it re-prompts the model for a tool call and gives up once its recovery attempts are exhausted.
This is almost always an inference-server configuration problem, not a model or Strix problem. Common symptoms are the model printing a call as text such as:
tool_calls. A correctly configured endpoint either returns a structured call or rejects the request outright — it never leaks the call as text.
Fixes by server
llama.cpp (llama-server)
- Run with
--jinjaand a correct tool-use chat template (--chat-template/--chat-template-filematching the model). Recent builds enable--jinjaby default — upgrade if yours doesn’t. - For thinking models, align or disable reasoning (
--reasoning-format,-rea off) so it doesn’t break tool-call parsing. - A low temperature (e.g.
--temp 0.2) improves tool-call reliability.
- Use a recent Ollama and a model whose template wires tools. Modern Ollama refuses tools (
tools param requires --jinja flag) if the template lacks tool support. - For reasoning models (e.g. qwen3), disable the model’s thinking mode — thinking left on frequently pushes the tool call into the text
contentinstead of the structuredtool_callsfield. Turn it off on the Ollama side (a non-thinking model variant, orthink: falsein the model’s parameters /Modelfile). - Raise
num_ctxto at least 16k–32k. Strix sends a large system prompt plus many tool schemas; at Ollama’s small default context the tool definitions are truncated out of the prompt and the model stops emitting valid calls. A short test prompt can look fine while a real scan fails, so set this explicitly rather than inferring it from a quick check.
- Start with
--enable-auto-tool-choice, a matching--tool-call-parser(hermes,qwen3_xml, orllama3_json), and a matching--reasoning-parserfor reasoning models.